package pro.shushi.pamirs.business.api.enumeration;

import pro.shushi.pamirs.meta.annotation.Errors;
import pro.shushi.pamirs.meta.common.enmu.ExpBaseEnum;

import static pro.shushi.pamirs.meta.common.enmu.ExpBaseEnum.ERROR_TYPE.BIZ_ERROR;

@Errors(displayName = "商业模块错误枚举")
public enum BusinessExpEnumerate implements ExpBaseEnum {

    ORIGIN_PARTNER_IS_REQUIRED(ERROR_TYPE.SYSTEM_ERROR, 10048000, "必须设置「源合作伙伴」，请联系开发人员解决"),
    TARGET_PARTNER_IS_REQUIRED(ERROR_TYPE.SYSTEM_ERROR, 10048001, "必须设置「目标合作伙伴」，请联系开发人员解决"),
    CODE_ISNULL_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10048002, "code不存在"),
    COMPANY_TEAM_TYPE(BIZ_ERROR, 10048003, "请选择创建的类型"),
    COMPANY_NAME_LENGTH(BIZ_ERROR, 10048004, "名称长度不少于3个字且不超过64个字"),
    COMPANY_NAME_CH_EN_NUM(BIZ_ERROR, 10048005, "名称仅支持中文、英文和数字"),
    COMPANY_NAME_ENT_UNIQUE(BIZ_ERROR, 10048006, "该企业已存在"),
    COMPANY_NAME_GOV_UNIQUE(BIZ_ERROR, 10048007, "该单位已存在"),
    COMPANY_NAME_ORG_UNIQUE(BIZ_ERROR, 10048008, "该组织已存在"),
    COMPANY_POS_IS_NULL(BIZ_ERROR, 10048009, "请选择你的职务"),
    COMPANY_STAFF_SIZE_IS_NULL(BIZ_ERROR, 10048010, "请选择人员规模"),
    COMPANY_TYPE_IS_NULL(BIZ_ERROR, 10048011, "请选择所属行业"),
    COMPANY_USER_IS_NOT_EXISTED(BIZ_ERROR, 10048012, "当前用户不存在"),
    COMPANY_JOIN_ILLEGAL(BIZ_ERROR, 10048013, "加入团队参数异常"),
    COMPANY_JOIN_NOT_FOUND(BIZ_ERROR, 10048014, "未查询到团队"),
    COMPANY_JOIN_JOINED(BIZ_ERROR, 10048015, "已加入该团队"),
    COMPANY_JOIN_WAIT_AUDIT(BIZ_ERROR, 10048016, "请等待管理员审核"),
    COMPANY_EXIT_NOT_JOINED(BIZ_ERROR, 10048017, "未加入到该团队"),
    COMPANY_EXIT_OTHERS_NULL(BIZ_ERROR, 10048018, "未加入到其他团队,不能退出当前团队"),
    COMPANY_MAIN_ILLEGAL(BIZ_ERROR, 10048019, "设置主企业参数异常"),
    COMPANY_MAIN_ERROR(BIZ_ERROR, 10048020, "设置主企业失败"),
    COMPANY_CODE_JOIN_ILLEGAL(BIZ_ERROR, 10048021, "加入团队手机验证不通过"),
    COMPANY_DOMAIN_ILLEGAL(BIZ_ERROR, 10048022, "请设置域名"),
    COMPANY_DOMAIN_EXISTED(ERROR_TYPE.SYSTEM_ERROR, 10048023, "该域名已被使用"),
    COMPANY_DOMAIN_TIMES(ERROR_TYPE.SYSTEM_ERROR, 10048024, "每年最多可以修改3次域名"),
    COMPANY_JOIN_PHONE_EMPTY(ERROR_TYPE.SYSTEM_ERROR, 10048025, "请输入手机号"),
    COMPANY_JOIN_PHONE_ILLEGAL(ERROR_TYPE.SYSTEM_ERROR, 10048026, "手机号错误"),
    COMPANY_JOIN_EMAIL_ILLEGAL(ERROR_TYPE.SYSTEM_ERROR, 10048027, "请输入正确的邮箱"),
    COMPANY_JOIN_PHONE_EMAIL_ILLEGAL(ERROR_TYPE.SYSTEM_ERROR, 10048028, "请输入邮箱或者手机号"),
    COMPANY_JOIN_COMPANY_CODE_ILLEGAL(ERROR_TYPE.SYSTEM_ERROR, 10048029, "加入团队缺少团队信息"),
    COMPANY_JOIN_DESC_32(ERROR_TYPE.SYSTEM_ERROR, 10048030, "申请理由不得超过32个字"),
    COMPANY_JOIN_NAME_LENGTH(ERROR_TYPE.SYSTEM_ERROR, 10048031, "真实姓名长度不少于2个字且不超过32个字"),
    COMPANY_JOIN_NAME_ILLEGAL(ERROR_TYPE.SYSTEM_ERROR, 10048032, "真实姓名仅支持中文、英文和数字，且必须以中文或英文开头"),
    COMPANY_JOIN_VER_CODE_ILLEGAL(ERROR_TYPE.SYSTEM_ERROR, 10048033, "验证码错误"),
    COMPANY_JOIN_VER_CODE_EXPIRED(ERROR_TYPE.SYSTEM_ERROR, 10048034, "验证码已失效，请重新获取验证码"),
    COMPANY_NOT_FIND(ERROR_TYPE.SYSTEM_ERROR, 10048035, "未找到公司"),
    COMPANY_NOT_ALLOW_CREATE_TENANT(ERROR_TYPE.SYSTEM_ERROR, 10048036, "不允许初始化租户"),
    TENANT_EMPTY(ERROR_TYPE.SYSTEM_ERROR, 10048037, "租户不允许为空"),
    COMPANY_CODE_EMPTY(ERROR_TYPE.SYSTEM_ERROR, 10048038, "公司编码不允许为空"),
    EMPLOYEE_BIND_USER_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10048039, "员工绑定用户失败"),
    HAS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10048040, "发生错误"),
    APP_INSTALL_ILLEGAL_ARG(ERROR_TYPE.SYSTEM_ERROR, 10048041, "安装应用参数异常"),
    TENANT_INIT_ERROR_ILLEGAL_ARG(ERROR_TYPE.SYSTEM_ERROR, 10048042, "请联系数式渠道推广人员"),
    APP_INSTALL_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10048043, "安装应用发生异常，请稍候再试"),
    APP_STATUS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10048044, "应用状态检查失败，请稍候再试"),
    WXA_QRCODE_ERROR(BIZ_ERROR, 10048045, "生成小程序码发生异常"),
    EMPLOYEE_NAME_ERROR(ERROR_TYPE.BIZ_ERROR, 10048046, "员工姓名校验失败，规则：2-32个字，仅支持中文、英文和数字，且必须以中文或英文开头"),
    COMPANY_HAS_CHILD_DELETE_ERROR(ERROR_TYPE.BIZ_ERROR, 10048047, "存在有效子公司，不允许删除"),
    EMPLOYEE_LOGIN_ERROR(ERROR_TYPE.BIZ_ERROR, 10048048, "登录账号校验失败，规则：2-32个字，仅支持中文、英文和数字，且必须以中文或英文开头"),
    EMPLOYEE_CODE(ExpBaseEnum.ERROR_TYPE.BIZ_ERROR, 10048049, "员工编码不能为空"),
    EMPLOYEE_NAME(ExpBaseEnum.ERROR_TYPE.BIZ_ERROR, 10048050, "员工名称不能为空"),
    COMPANY_CODE(ExpBaseEnum.ERROR_TYPE.BIZ_ERROR, 10048051, "所属公司编码不能为空"),
    COMPANY_NAME(ExpBaseEnum.ERROR_TYPE.BIZ_ERROR, 10048052, "所属公司名称不能为空"),
    INITIAL_PASSWORD(ExpBaseEnum.ERROR_TYPE.BIZ_ERROR, 10048053, "初始密码需为6至32位"),
    COMPANY_NOT_CREATED_EXCEPTION(ExpBaseEnum.ERROR_TYPE.BIZ_ERROR, 10048054, "公司编码不存在"),
    LOGIN_ACCOUNT_NOT_EMPTY_EXCEPTION(ExpBaseEnum.ERROR_TYPE.BIZ_ERROR, 10048055, "登录账号不能为空"),
    USER_PARAM_LOGIN_ERROR(ERROR_TYPE.BIZ_ERROR, 10048056, "登录账号校验失败，规则：账号仅支持数字字母和下划线.@-组合,不支持其他字符，账号长度应是1-35位"),
    MAIN_DEPARTMENT_NOT_FOUND_EXCEPTION(ERROR_TYPE.BIZ_ERROR, 10048057, "所属主部门不存在"),
    DEPARTMENT_NOT_FOUND_EXCEPTION(ERROR_TYPE.BIZ_ERROR, 10048058, "所属部门不存在 {}"),
    ROLE_NOT_FOUND_EXCEPTION(ERROR_TYPE.BIZ_ERROR, 10048059, "角色不存在 {}"),
    DEPARTMENT_CODE_NOT_EMPTY_EXCEPTION(ERROR_TYPE.BIZ_ERROR, 10048060, "部门编码不能为空"),
    DIRECT_POSITION_NOT_FOUND_EXCEPTION(ERROR_TYPE.BIZ_ERROR, 10048061, "直属岗位编码不存在"),
    DEPARTMENT_CODE_NOT_FOUND_EXCEPTION(ERROR_TYPE.BIZ_ERROR, 10048062, "所属部门编码不存在"),
    DEPARTMENT_NAME_NOT_EMPTY_EXCEPTION(ERROR_TYPE.BIZ_ERROR, 10048063, "部门名称不能为空"),
    DUPLICATE_DEPARTMENT_NAME_EXCEPTION(ERROR_TYPE.BIZ_ERROR, 10048064, "同公司 同级别部门名称不允许相同"),
    PARENT_DEPARTMENT_NOT_FOUND_EXCEPTION(ERROR_TYPE.BIZ_ERROR, 10048065, "上级部门不存在"),
    POSITION_CODE_NOT_EMPTY_EXCEPTION(ERROR_TYPE.BIZ_ERROR, 10048066, "岗位编码不能为空"),
    POSITION_NAME_NOT_EMPTY_EXCEPTION(ERROR_TYPE.BIZ_ERROR, 10048067, "岗位名称不能为空"),
    DUPLICATE_ACCOUNT_BINDING_EXCEPTION(ERROR_TYPE.BIZ_ERROR, 10048068, "同一公司下的员工不允许绑定相同账户"),
    COMPANY_NAME_EMPTY(ERROR_TYPE.BIZ_ERROR, 10048069, "公司名称不允许为空"),
    COMPANY_PARENT_NOT_FIND(ERROR_TYPE.BIZ_ERROR, 10048070, "上级公司不存在"),
    COMPANY_PARENT_CANNOT(ERROR_TYPE.BIZ_ERROR, 10048071, "公司不能选择自身作为上级公司"),
    SELF_PARENT_DEPARTMENT_EXCEPTION(ERROR_TYPE.BIZ_ERROR, 10048072, "部门不能选择自身作为上级部门"),
    SELF_PARENT_POSITION_EXCEPTION(ERROR_TYPE.BIZ_ERROR, 10048073, "岗位不能选择自身作为上级岗位"),
    SYSTEM_ERROR_USER(ERROR_TYPE.SYSTEM_ERROR, 10048074, "系统异常，未获取到用户"),
    DEPT_IMMEDIATE_SUPERVISOR_LOOP(ERROR_TYPE.BIZ_ERROR, 10048075, "直属主管形成闭环");

    private final ERROR_TYPE type;

    private final int code;

    private final String msg;

    BusinessExpEnumerate(ERROR_TYPE type, int code, String msg) {
        this.type = type;
        this.code = code;
        this.msg = msg;
    }

    @Override
    public ERROR_TYPE type() {
        return type;
    }

    @Override
    public int code() {
        return code;
    }

    @Override
    public String msg() {
        return msg;
    }
}
